package com.uinnova.springboot.web.listener;


import javax.servlet.annotation.WebListener;
import javax.servlet.http.*;


/*
 *@author 王刚
 *@date 2019-01-05 13:42
 *httpSessionListener 一个session会话期间
 * sservletContextListener 应用程序启动到结束生效
 *在webconfig中代码注册完了之后就不用注解注册
 *
 */
//@WebListener
public class MyHttpSessionListener implements HttpSessionListener,HttpSessionAttributeListener{


    /*
    *@author 王刚
    *@date 2019-01-09 12:54
    *这个地方容易出错 sessioncreate方法，在session被创建的时候进来，此时sesison.setAttribute的操作还没完成，获取不到attribute所以需要继承HttpSesisonAttributeListener接口实现对attribute的操作
    */

    @Override
    public void sessionCreated(HttpSessionEvent se) {
//        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//        HttpSession session = request.getSession();
//        System.out.println(session.getAttribute("user"));

//        System.out.println(se.getSession().getServletContext().getAttribute("user"));


        System.out.println("session被创建");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println(se.getSession().getId());

        System.out.println("session被销毁");
    }

    /*
     *@author 王刚
     *@date 2019-01-09 10:55
     *HttpSessionAttributeListener 对attribute操作时的接口
     *
     * 最好用一个session，存入数据的时候只是存入的属性名不同，这样方便统一管理
     */

    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        System.out.println(se.getSession().getAttribute("testinterceptor"));
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {

    }
}
